por ejemplo
tengo una cadena como
String example = "Hello\nHow\nAre\nyou today? I Love Pizza"; //Lo que quiero es una matriz como esta
[Hello, \n, How, \n, Are, \n, you, today? , I , Love, Pizza]Ya probé
String[] splited = example.split("[\\n\\s]+");// as will a lot of regular exprisions like ("\\n\\r+") etc.pero no funcionaron.
¿alguien tiene una solución por favor?
Puede dividir afirmando una secuencia de nueva línea \R a la izquierda o a la derecha, o hacer coincidir un carácter de espacio en blanco horizontal \h usando una alternancia |
(?=\\R)|(?<=\\R)|\\hPor ejemplo
String example = "Hello\nHow\nAre\nyou today? I Love Pizza"; // String[] splited = example.split("(?=\\R)|(?<=\\R)|\\h"); for (String element : splited) { if (element.equals("\n")) element = "newline"; System.out.println(element); }Producción
Hello newline How newline Are newline you today? I Love Pizza// Split on the following: // look ahead for '\n' which is preceded by a character that is not '\n' // OR look ahead for a character that is not '\n' preceded by '\n' // OR a single space. String regex = "(?=\\n)(?<!\\n)|(?!\\n)(?<=\\n)| "; String example = "Hello\nHow\nAre\nyou today? I Love Pizza"; // This is the array that you want. String[] splited = example.split(regex); // This is just to display the contents of 'splited'. int count = 0; for (String part : splited) { count++; if (part.equals("\n")) { // Rather than print the actual newline, print its escape sequence System.out.printf("%2d. \\n%n", count); } else { System.out.printf("%2d. %s%n", count, part); } }Resultado:
1. Hello 2. \n 3. How 4. \n 5. Are 6. \n 7. you 8. today? 9. I 10. Love 11. PizzaPuede hacerlo simplemente usando lookbehind (especificado por ?<= ) o lookahead (especificado por ?= ) para \n y alternado con \s+ (para espacios en blanco).
Manifestación:
import java.util.Arrays; public class Main { public static void main(String[] args) { String example = "Hello\nHow\nAre\nyou today? I Love Pizza"; // String[] splited = example.split("(?<=\\n)|(?=\\n)|\\s+"); System.out.println(Arrays.toString(splited)); } }Producción:
[Hello, , How, , Are, , you, today?, I, Love, Pizza]